Haptic correlated graphic effects

ABSTRACT

A method includes dividing a display of an electronic device into multiple regions defined by vertices, calculating time varying positions for each vertex relative to a z dimension, and composing a screen for the display that includes the varying positions for each vertex to create an animated display distortion. The distortion may occur in association with haptic effects.

TECHNICAL FIELD

The present application is related to graphic effects on a display, andin particular to haptic correlated graphic effects.

BACKGROUND

Current mobile phones utilize shake animations that are implemented astranslations of a view. Visually, it appears as if the entire view ismoved from side to side.

SUMMARY

A method includes dividing a display of an electronic device intomultiple regions defined by vertices, calculating time varying positionsfor each vertex relative to a z dimension, and composing a screen forthe display that includes the time varying positions for each vertex tocreate an animated display distortion.

A machine readable storage device having instructions for execution by aprocessor to cause the machine to perform operations. The operationsinclude dividing a display of an electronic device into multiple regionsdefined by vertices, calculating time varying positions for each vertexrelative to a z dimension, and composing a screen for the display thatincludes the time varying positions for each vertex to create ananimated display distortion.

A device includes a processor, a display coupled to the processor, and amemory device coupled to the processor and having a program storedthereon for execution by the processor to perform operations. Theoperations include dividing the display into multiple regions defined byvertices, calculating time varying positions for each vertex relative toa z dimension, and composing a screen for the display that includes thetime varying positions for each vertex to create an animated displaydistortion.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A is a block diagram illustrating graphic effects on a mobiledevice display according to an example embodiment.

FIG. 1B is a block diagram illustrating a mobile device that generatesgraphic effects on the mobile device display in coordination with hapticeffects occurring on the mobile device according to an exampleembodiment.

FIG. 2 is a block diagram of a tessellation grid that divides a displayinto regions defined by vertices according to an example embodiment.

FIG. 3 is a block diagram illustrating perspective projections of adisplay according to an example embodiment.

FIG. 4 is a representation of motion of a piston for modelingoscillation of the vertices according to an example embodiment.

FIG. 5 is a representation of calculations to determine distancesimplified to be the distance between a rod position and a center of theaxis or axle according to an example embodiment.

FIG. 6 is a block diagram representation of calculating the distancebetween the rod position and center of the axle using a sin functionaccording to an example embodiment.

FIG. 7 is a hybrid block diagram and graphic representation ofapplication of a Perlin noise function according to an exampleembodiment.

FIG. 8 is a flowchart of a method of providing animation according to anexample embodiment.

FIG. 9 illustrates an example of GL shading language (GLSL) code forproviding an animation of the screen according to an example embodiment.

FIG. 10 is a block schematic diagram of a computer system to implementmethods according to an example embodiment.

DETAILED DESCRIPTION

In the following description, reference is made to the accompanyingdrawings that form a part hereof, and in which is shown by way ofillustration specific embodiments which may be practiced. Theseembodiments are described in sufficient detail to enable those skilledin the art to practice the invention, and it is to be understood thatother embodiments may be utilized and that structural, logical andelectrical changes may be made without departing from the scope of thepresent invention. The following description of example embodiments is,therefore, not to be taken in a limited sense, and the scope of thepresent invention is defined by the appended claims.

The functions or algorithms described herein may be implemented insoftware in one embodiment. The software may consist of computerexecutable instructions stored on computer readable media or computerreadable storage device such as one or more non-transitory memories orother type of hardware based storage devices, either local or networked.Further, such functions correspond to modules, which may be software,hardware, firmware or any combination thereof. Multiple functions may beperformed in one or more modules as desired, and the embodimentsdescribed are merely examples. The software may be executed on a digitalsignal processor. ASIC, microprocessor, or other type of processoroperating on a computer system, such as a personal computer, server orother computer system, turning such computer system into a specificallyprogrammed machine.

A screen (user interface) to be displayed on a display of a hand helddevice is divided into multiple regions, such as rectangles, trianglesor other applicable shapes. These regions may be arrangednon-overlapping and/or without gaps over the screen (or a representationof the screen to be displayed). A shape may be bounded by edges andvertices (or the points where edges meet). For example, the rectanglescan be defined by vertices (corners of regions). Each rectangle includesmultiple pixels. Over time, the vertices are transformed or distorted ina manner to simulate vibration of the regions towards or away from auser viewing the display. The screen for the display includes thetransformed vertices to create an animated display distortion inassociation with the occurrence of haptic effects for the mobile device.In one embodiment, the animated display coincides with the hapticeffects to provide a visual indication of an alert or other notificationwhile the haptic effects are occurring, or in place of the hapticeffects. The display appears to a viewer as a perspective projectionwhere parts of the display are enlarged or shrunken in size, creating adistortion of the display. The distortions may utilize Perlin noise as awave function to both prevent the projection from looking too perfect toa user and to create a rolling appearance of the projection on thedisplay.

A typical user interface is the result of composing multiple applicationgenerated surfaces or layers. A graphical co-processor may be used toimplement the composing of the layers into an animated display. Thegraphical co-processor may also be used to add the distortion effectsduring composition. The animated display distortion provides a threedimensional graphical effect, providing a better visual representationof haptic effects on the device.

FIG. 1A is a block diagram illustrating graphic effects 100 on a mobiledevice display according to an example embodiment. Several displayelements 110, 115, and 120 are generated by applications and operatingsystem code running on the mobile device. Display element 110 is asurface generated by a first application. Display element 115 is asurface generated by a second application, while display element 120 isa status bar which may be generated by other code, such as operatingsystem code, running on the mobile device.

The display elements are composed by the mobile device and displayed ona display of the mobile device. Distortions are applied in oneembodiment, resulting in the graphic effects 100. In one embodiment,graphic effects 100 as shown are a captured frame at one point in time.The distortions result in parts of the screen appearing closer orfurther away to a user viewing the display. In one embodiment, thedisplay is divided into 32×48 regions or more. The distortions areapplied across the screen in accordance with a function such that partsappearing closer in one part of the screen gradually transition to partsappearing further away. For instance, the words “Phone Options” appearsgenerally at 125. The “P” in the words “Phone Options” appears furtheraway than the “o” and the “n”. The “P” may be presented within a singleregion or multiple regions. These variations in perspective (“z”distance—from a user or camera perspective) appear across the entirescreen in one embodiment and may vary in both the “x” and “y” directionsof the screen. Note that “x” and “y” dimensions corresponding to leftand right, and up and down directions on the display, while the “z”dimension corresponds to the appearance of depth into and out of thedisplay from the perspective of a user or camera, or the users depthperception of objects on the screen. User interface functions associatedwith the display elements can be independent of whether the displayelements are distorted or not.

FIG. 1B is a block diagram illustrating a mobile device 150 thatgenerates graphic effects 100 on the mobile device display incoordination with haptic effects occurring on the mobile device 150.Mobile device 150 is shown in simplified form and may include aprocessor 155 coupled to a memory device 160 that stores applications,data, and other code for execution on the processor 155. A transceiver165 is coupled to the processor 155 to provide wireless communicationsvia one or more wireless networks. The transceiver 165 may include oneor more antennas for transmitting and receiving wireless communications.A haptic effect controller 170 may also be coupled to the processor 155and controls the provision of haptic effects, such as mechanicalvibrations responsive to alarms or other notifications occurring onmobile device 150, such as the receipt of a phone call, email, textmessage, or other event. The haptic effects may be configured via a userinterface to occur for selected events. The user interface may simply bea list of events with check boxes for the types of effects desired foreach event, such as “ring tone” “vibrate” “graphic distortion”, allowingthe user to select one or more such effects. The controller 170 may besoftware code for execution on processor 155 to provide signals tocontrol provision of the graphic effects responsive to user selections.A graphics engine 175 may include programming code that runs onprocessor 155 or a graphics processor within engine 175 to generategraphic effects responsive to the controller 170.

In one embodiment, the haptic effects are correlated with the graphiceffects 100. If an event, such as a phone call, initiated hapticeffects, the graphics engine 175 is controlled via controller 170 toproduce the graphic effects 100. If the event does not trigger thehaptic effects, the graphics engine 175 may exclude the distortions,resulting in an undistorted display as indicated at 180. In furtherembodiments, the graphic effects may be produced independently of thehaptic effects, or selectively as controlled by user preferences. Forinstance, the user may simply want to include the graphic effect with orwithout haptic effects, and with or without a ringtone for differentevents, such as receipt of a phone call, text message, email, or othernotification generated by one of many different applications.

FIG. 2 is a block diagram of a tessellation grid 200 that shows an arrayof 8×10 regions. Corners of the regions are indicated at 210 in the “x”and “y” dimensions. The haptic effects for a graphics display may begenerated based on a model emulating the visual effect as if a screenwere placed on top of a shaker bed consisting of multiple pistonsarranged according to the tessellation grid, the graphics displaydisplayed on the screen while the pistons moving up and down, eachpiston corresponding to a circle in the grid 200.

The corners 210 correspond to vertices. Each vertex 210 is drawn as acircle to emulate a single piston moving up and down, causing thesurface above it to change in size, appearing to move closer and furtheraway from a user viewing the screen. In actuality, each vertex is apoint, and is only drawn as a circle to invoke the piston based model.Thus, each vertex is effectively moved by each piston, and the regionsbetween the vertices effectively tilt between the vertices such that thedistortions stretch across the regions.

FIG. 3 is a block diagram illustrating perspective projections of thedisplay at 300. The same coordinate system is used, having x, y, and zdimensions, with z being a distance of portions of a display 310 from aviewer represented as a camera 320. When a vertex is pushed by thepiston toward a viewer, the area around the vertex is made larger toappear closer to the viewer. When a vertex is moved by the piston awayfrom the viewer, the area around the vertex is made smaller to appearfurther away from the viewer. The piston-like effect on the verticescreates a distortion of the display. Distorting the z coordinate insidea vertex shader executing on the engine 175 prior to applying theprojection matrix may be done to implement the effect. A vertex shaderis a graphics function that transforms each vertex's 3D position invirtual space to the 2D coordinate at which it appears on the display.

FIG. 4 is a representation 400 of motion of a piston 410 for modelingoscillation of a vertex. The piston 410 is coupled to a piston rod 415that rotates around an axis as indicated at 420, causing the piston 410to move up and down within a cylinder 425. The piston 410 is representedin different positions at 430 and 435 in a time sequence of images inFIG. 4, with arrows representing the direction of rotation of the axisand movement of the piston.

In one embodiment, the position of the piston is a representation of the“z” associated with a vertex of the display. Variation of the “z” (intime) can be modeled according to the movement of the position of thepiston. The “z” can be determined in a simplified manner according tothe distance between the rod 415 position and a center of the axis oraxle as represented in two example positions 500 and 510 in FIG. 5.

FIG. 6 is a block diagram representation 600 of calculating the distancebetween the rod 415 position and center of the axle using a sinefunction, where the distance or height is the sine of the angle of therod with respect to the axle, varying between −1 and 1. A cosinefunction may be used in further embodiments depending on the axisselected as zero degrees of rotation.

In one embodiment, the length of each piston rod varies over time usinga Perlin noise pattern having a turbulence function calculated from fourfrequencies of noise. This is done by subtracting an absolute value ofeach frequency from the center value. The resulting distortion of thescreen over time may be referred to as an animation. As the animationtime increases, the mapping between pistons and the noise functionshifts to the right to create a wave effect, as the haptic effecttravels through the device. The animation may be correlated with thevibrations of the haptic effect.

FIG. 7 is a hybrid block diagram and graphic representation 700 of theapplication of the Perlin noise function described above. The fourfrequencies of noise are represented at 710, 715, 720, and 725. In oneembodiment, the frequencies double while the amplitude is reduced byhalf for each of the four frequencies of noise as indicated on thegraphs of the noise. The resulting effect is represented atcorresponding graphical representations (surfaces) of frequencies ofnoise 730, 735, 740, and 745, where the noise frequencies are extendedto a third dimension. The frequencies of noise are combined with thetessellated vertices at 750 to provide the animation applied to thescreen. In one embodiment, surface 730 is applied to the tessellatedvertices at 750. Surface 735 is applied to each quadrant of surface 730,surface 740 is applied to each quadrant of surface 735, and surface 745is applied to each quadrant of surface 740 such that each surface isapplied to all the tessellated vertices.

A simplified flowchart of a method 800 of providing animation is shownin flowchart form in FIG. 8. Method 800 in one embodiment includesdividing a display of an electronic device into multiple regions at 810defined by their vertices. At 815, time varying positions for eachvertex time are calculated. At 820, a screen is composed for the displaythat includes the varying positions for each vertex to create ananimated display distortion in association with the haptic effects.Method 800 may be triggered by any event giving rise to the generationof haptic effects of the mobile device, such as when the device isplaced in vibrate mode for incoming calls or other alerts.

In one embodiment, composing the screen includes adding the time varyingpositions for each vertex to a screen display generated by anapplication running on the electronic device. The varying positions foreach portion are calculated to provide a visual wave effect in a furtherembodiment. The varying positions may vary between enlarged andshrunken, creating a distortion in the display. A Perlin noise functionas described above may be added to the time varying positions in furtherembodiments. An intensity value may be used to transition thedistortions on and off in a graceful manner as opposed to an on/off stepfunction.

FIG. 9 illustrates example GL shading language (GLSL) code 900 forproviding an animation of the screen. GLSL is a high level shadinglanguage designed to provide programmers better control of a graphicspipeline for modifying presentation of surfaces on a display.

Input variables used in code 900 include:

Z—A constant that defines the z-position where the display is located inthe model (depth of no distortion)

a_position—A 2d position of a vertex on the display (defined in screencoordinates . . . pixel #'s)

NoiseTexture—The bound texture sampler that contains the Perlin noisepattern.

Each fragment from the textures is a vector4, with each elementcontaining a different frequency.

INTENSITY—A variable passed in that defines the current intensity of theeffect. The intensity can vary from 0 . . . 1. (0 is off, 1 is fullintensity)

DEPTH—The default length of a piston.

MVPMatrix—A 4×4 matrix containing a perspective transformation between3d and 2d.

In one embodiment, code 900 is a vertex shader (to perform a vertexshader function), which is executed to determine the position of themodeling piston of FIG. 4 defining the distortion of a screen. At line912, a void type of main is specified, providing an entry point to thevertex shader program. At 914, a vector is specified providing locationsfor the portions of the screen. The screen size and time are alsospecified to make the effect appear to walk across the screen. The timemay vary from 0 to n, with n in one example being 500 msec.

Noise functions are specified at 916 for the four noise waveformsdescribed above that provide a Perlin noise texture. At 918, a floatintensity of 0-1 is defined, which corresponds to the turbulencefunction. The float intensity is comprised of four components, one ofwhich is included in line 918 and three more are specified at 920, 922,and 924, corresponding to the four different waveforms of noise. Lines918, 920, 922, and 924 add an absolute value of each of the fourcomponents of noise to provide each piston with a different radiusreflecting the noise, which means a different amount of shift in thez-axis.

A float shake is described at 926, which effectively changes the lengthor throw of the piston over time. The term “SINTHETA” corresponds toanimation between −1 and +1, and “DEPTH” is the maximum length of travelof the piston. Line 928 is used to specify the x,y position on thescreen and blend the effect during z direction movement to provide asmooth transition between the portion appearing near and far,transforming the x,y pixels to provide a varying perspective. The smoothtransition is provided by the intensity value, fading the effect in andout.

FIG. 10 is a block schematic diagram of a computer system 1000 toimplement a device having a screen to which a three dimensionalappearing effect is applied according to example embodiments. Allcomponents need not be used in various embodiments. One examplecomputing device in the form of a computer 1000, may include aprocessing unit 1002, memory 1003, removable storage 1010, andnon-removable storage 1012. Processing unit 1002 in one embodiment mayinclude a graphics co-processor that performs operations on aprogrammable pipeline that applies the animation to one or more displaysurfaces created by programs running on the device. Although the examplecomputing device is illustrated and described as computer 1000, thecomputing device may be in different forms in different embodiments. Forexample, the computing device may instead be a smartphone, a tablet,smartwatch, or other computing device including the same or similarelements as illustrated and described with regard to FIG. 10. Devicessuch as smartphones, tablets, and smartwatches are generallycollectively referred to as mobile devices. Further, although thevarious data storage elements are illustrated as part of the computer1000, the storage may also or alternatively include cloud-based storageaccessible via a network, such as the Internet.

Memory 1003 may include volatile memory 1014 and non-volatile memory1008. Computer 1000 may include—or have access to a computingenvironment that includes—a variety of computer-readable media, such asvolatile memory 1014 and non-volatile memory 1008, removable storage1010 and non-removable storage 1012. Computer storage includes randomaccess memory (RAM), read only memory (ROM), erasable programmableread-only memory (EPROM) & electrically erasable programmable read-onlymemory (EEPROM), flash memory or other memory technologies, compact discread-only memory (CD ROM), Digital Versatile Disks (DVD) or otheroptical disk storage, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices capable of storingcomputer-readable instructions for execution to perform functionsdescribed herein.

Computer 1000 may include or have access to a computing environment thatincludes input 1006, output 1004, and a communication connection 1016.Output 1004 may include a display device, such as a touchscreen, thatalso may serve as an input device. The input 1006 may include one ormore of a touchscreen, touchpad, mouse, keyboard, camera, one or moredevice-specific buttons, one or more sensors integrated within orcoupled via wired or wireless data connections to the computer 1000, andother input devices. The computer may operate in a networked environmentusing a communication connection to connect to one or more remotecomputers, such as database servers, including cloud based servers andstorage. The remote computer may include a personal computer (PC),server, router, network PC, a peer device or other common network node,or the like. The communication connection may include a Local AreaNetwork (LAN), a Wide Area Network (WAN), cellular, WiFi, Bluetooth, orother networks.

Computer-readable instructions stored on a computer-readable storagedevice are executable by the processing unit 1002 of the computer 1000.A hard drive, CD-ROM, and RAM are some examples of articles including anon-transitory computer-readable medium such as a storage device. Theterms computer-readable medium and storage device do not include carrierwaves. For example, a computer program 1018 capable of providing ageneric technique to perform access control check for data access and/orfor doing an operation on one of the servers in a component object model(COM) based system may be included on a CD-ROM and loaded from theCD-ROM to a hard drive. The computer-readable instructions allowcomputer 1000 to provide generic access controls in a COM based computernetwork system having multiple users and servers.

The following non-limiting examples illustrate various combinations ofembodiments.

Example 1 includes a method including dividing a display of anelectronic device into multiple regions defined by vertices, calculatingtime varying positions for each vertex relative to a horizon in time,and composing a screen for the display that includes the time varyingpositions for each vertex to create an animated display distortion.

Example 2 includes the method of example 1 wherein composing the screencomprises adding the time varying positions for each vertex to a surfacegenerated by an application running on the electronic device.

Example 3 includes the method of any of examples 1-2 wherein the timevarying positions for each vertex are calculated to provide a visualwave effect in association with haptic effects.

Example 4 includes the method of any of examples 1-3 wherein the varyingpositions vary between enlarged and shrunken, creating a distortion inthe display.

Example 5 includes the method of example 4 wherein creating varyingpositions utilizes a piston rod sin function.

Example 6 includes the method of example 5 wherein a length of thepiston rod is varied over time.

Example 7 includes the method of example 6 wherein the length of thepiston rod is varied over time in accordance with a Perlin noise patternusing a turbulence function calculated from four frequencies of noise.

Example 8 includes the method of example 7 wherein a mapping betweenpistons and the noise pattern shifts across the screen to create a waveeffect.

Example 9 includes the method of any of examples 1-8 and furthercomprising transitioning the animated display distortion on and off inaccordance with an intensity value.

Example 10 includes a machine readable storage device havinginstructions for execution by a processor to cause the machine toperform operations including dividing a display of an electronic deviceinto multiple regions defined by vertices, calculating time varyingpositions for each vertex relative to a z dimension, and composing ascreen for the display that includes the time varying positions for eachvertex to create an animated display.

Example 11 includes the machine readable storage device of example 10wherein the operations for composing the screen comprise adding thevarying positions for each vertex to a surface generated by anapplication running on the electronic device.

Example 12 includes the machine readable storage device of any ofexamples 10-11 wherein the time varying positions for each vertex arecalculated to provide a visual wave effect in association with hapticeffects.

Example 13 includes the machine readable storage device of any ofexamples 10-12 wherein the varying positions vary between enlarged andshrunken, creating a distortion in the display in association withhaptic effects.

Example 14 includes the machine readable storage device of example 13wherein creating varying positions utilizes a piston rod sin function.

Example 15 includes the machine readable storage device of example 14wherein a length of the piston rod is varied over time in accordancewith a Perlin noise pattern using a turbulence function calculated fromfour frequencies of noise.

Example 16 includes a device having a processor, a display coupled tothe processor, and a memory device coupled to the processor and having aprogram stored thereon for execution by the processor to performoperations. The operations include dividing the display into multipleregions defined by vertices, calculating time varying positions for eachvertex relative to a z dimension, and composing a screen for the displaythat includes the time varying positions for each portion to create ananimated display distortion.

Example 17 includes the device of example 16 wherein composing thescreen comprises adding the time varying positions for each vertex to asurface generated by an application running on the electronic device.

Example 18 includes the device of any of examples 16-17 wherein thevarying positions vary between enlarged and shrunken, creating adistortion in the display.

Example 19 includes the device of any of examples 16-18 wherein creatingvarying positions utilizes a piston rod sin function.

Example 20 includes the device of any of examples 16-19 wherein a lengthof the piston rod is varied over time in accordance with a Perlin noisepattern using a turbulence function calculated from four frequencies ofnoise.

Although a few embodiments have been described in detail above, othermodifications are possible. For example, the logic flows depicted in thefigures do not require the particular order shown, or sequential order,to achieve desirable results. Other steps may be provided, or steps maybe eliminated, from the described flows, and other components may beadded to, or removed from, the described systems. Other embodiments maybe within the scope of the following claims.

What is claimed is:
 1. A method comprising: dividing a display of anelectronic device into multiple regions defined by vertices, each vertexcorresponding to a screen pixel position of the display; calculatingtime varying positions for each vertex using a noise function; composinga screen for the display that includes the time varying positions foreach vertex to create an animated display distortion; and transitioningthe animated display distortion on and off in accordance with anintensity value.
 2. The method of claim 1 wherein composing the screencomprises adding the time varying positions for each vertex to a surfacegenerated by an application running on the electronic device.
 3. Themethod of claim 1 wherein the time varying positions for each vertex arecalculated to provide a visual wave effect in association with hapticeffects.
 4. The method of claim 1 wherein the varying positions varybetween enlarged and shrunken, creating a distortion in the display. 5.The method of claim 4, wherein the calculating of the time varyingpositions utilizes a piston rod for each vertex.
 6. The method of claim5, further comprising varying lengths of the piston rods over time. 7.The method of claim 6 wherein the varying of the lengths of the pistonrods comprises varying the lengths of the piston rods in accordance witha Perlin noise pattern using a turbulence function calculated from fourfrequencies of noise.
 8. The method of claim 7 wherein a mapping betweenpistons and the Perlin noise pattern shifts across the screen to createa wave effect.
 9. A machine readable storage device having instructionsfor execution by a processor to cause the machine to perform operationscomprising: dividing a display of an electronic device into multipleregions defined by vertices, each vertex corresponding to a screen pixelposition of the display; calculating time varying positions for eachvertex using a noise function; and composing a screen for the displaythat includes the time varying positions for each vertex to create ananimated display; and transitioning the animated display distortion onand off in accordance with an intensity value.
 10. The machine readablestorage device of claim 9 wherein the operations for composing thescreen comprise adding the varying positions for each vertex to asurface generated by an application running on the electronic device.11. The machine readable storage device of claim 9 wherein the timevarying positions for each vertex are calculated to provide a visualwave effect in association with haptic effects.
 12. The machine readablestorage device of claim 9 wherein the varying positions vary betweenenlarged and shrunken, creating a distortion in the display inassociation with haptic effects.
 13. The machine readable storage deviceof claim 12 wherein the creating of the varying positions utilizes apiston rod for each vertex.
 14. The machine readable storage device ofclaim 13, wherein the operations for calculating time varying positionsfor each vertex further comprise varying lengths of the piston rods overtime in accordance with a Perlin noise pattern using a turbulencefunction calculated from four frequencies of noise.
 15. A devicecomprising: a processor; a display coupled to the processor; and amemory device coupled to the processor and having a program storedthereon for execution by the processor to perform operations comprising:dividing the display into multiple regions defined by vertices, eachvertex corresponding to a screen pixel position of the display;calculating time varying positions for each vertex using a noisefunction; composing a screen for the display that includes the timevarying positions for each vertex to create an animated displaydistortion; and transitioning the animated display distortion on and offin accordance with an intensity value.
 16. The device of claim 15wherein composing the screen comprises adding the time varying positionsfor each vertex to a surface generated by an application running on thedevice.
 17. The device of claim 15 wherein the varying positions varybetween enlarged and shrunken, creating a distortion in the display inassociation with haptic effects.
 18. The device of claim 15, wherein thecalculating of the varying positions utilizes a piston rod sine functionfor each vertex.
 19. The device of claim 18, further comprising varyinglengths of the piston rods over time in accordance with a Perlin noisepattern using a turbulence function calculated from four frequencies ofnoise.